home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / RTCPlugin.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  3KB  |  125 lines

  1. /*
  2.      File:        RTCPlugin.h
  3.  
  4.      Contains:    System interface for RTC plugins
  5.  
  6.      Version:    Technology:    System 8
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __RTCPLUGIN__
  19. #define __RTCPLUGIN__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #if FOR_SYSTEM8_PREEMPTIVE
  25. #ifndef __TIMING__
  26. #include <Timing.h>
  27. #endif
  28. #endif
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. #if PRAGMA_IMPORT_SUPPORTED
  35. #pragma import on
  36. #endif
  37.  
  38. #if PRAGMA_ALIGN_SUPPORTED
  39. #pragma options align=mac68k
  40. #endif
  41.  
  42. #if FOR_SYSTEM8_PREEMPTIVE
  43. /*
  44. ~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=
  45.     status codes
  46. ~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=
  47. */
  48.  
  49. enum {
  50.     kRTCPluginVersionOne        = 0x01,
  51.     kRTCPluginCurrentVersion    = kRTCPluginVersionOne
  52. };
  53.  
  54.  
  55. enum {
  56.     kRTCNoError                    = 0,
  57.     kRTCTimeout                    = 1,
  58.     kRTCUnexpectedError            = 2,
  59.     kRTCMemoryError                = 3,
  60.     kRTCParameterError            = 4,
  61.     kRTCDeviceError                = 5,
  62.     kRTCUnexpectedDeviceRequest    = 6,
  63.     kRTCControllerError            = 7,
  64.     kRTCConsistencyCheckError    = 8
  65. };
  66.  
  67. /*
  68. ~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=
  69.     Plugin Calls Provided by the Plugin
  70. ~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=
  71.  All plugin calls are async.
  72.  The plugin starts the i/o and returns immediately.
  73.  The plugin ISR calls RTCFamRequestComplete() when
  74.  the i/o is completed (see below).
  75. */
  76. typedef OSStatus (*RTCPluginHWVerifyPtr)(void );
  77. typedef OSStatus (*RTCPluginInitPtr)(void );
  78. typedef OSStatus (*RTCPluginTermPtr)(void );
  79. typedef OSStatus (*RTCPluginSetPtr)(Nanoseconds newTime);
  80. typedef OSStatus (*RTCPluginGetPtr)(Nanoseconds *currentTime);
  81. struct RTCPluginDispatchTable {
  82.     UInt32                             version;
  83.     UInt32                             reserved[3];
  84.     RTCPluginHWVerifyPtr             Verify;
  85.     RTCPluginInitPtr                 Init;
  86.     RTCPluginTermPtr                 Term;
  87.     RTCPluginGetPtr                 Read;
  88.     RTCPluginSetPtr                 Write;
  89. };
  90. typedef struct RTCPluginDispatchTable RTCPluginDispatchTable;
  91.  
  92. extern OSStatus RTCPluginHWVerify(void );
  93.  
  94. extern OSStatus RTCPluginInit(void );
  95.  
  96. extern OSStatus RTCPluginTerm(void );
  97.  
  98. extern OSStatus RTCPluginSet(Nanoseconds newTime);
  99.  
  100. extern OSStatus RTCPluginGet(Nanoseconds *currentTime);
  101.  
  102. /*
  103. ~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=
  104.     Plugin Calls Provided by the Family
  105. ~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=
  106. */
  107. extern void RTCFamRequestComplete(OSStatus status);
  108.  
  109. #endif
  110.  
  111. #if PRAGMA_ALIGN_SUPPORTED
  112. #pragma options align=reset
  113. #endif
  114.  
  115. #if PRAGMA_IMPORT_SUPPORTED
  116. #pragma import off
  117. #endif
  118.  
  119. #ifdef __cplusplus
  120. }
  121. #endif
  122.  
  123. #endif /* __RTCPLUGIN__ */
  124.  
  125.